C program for Knapsack problem using dynamic programming

Implement C program for Knapsack problem using dynamic programming


Code:


#include<stdio.h>



int max(int a, int b) { return (a > b)? a : b; }



int knapSack(int W, int wt[], int val[], int n)

{

int i, w;

int K[n+1][W+1];



for (i = 0; i <= n; i++)

{

for (w = 0; w <= W; w++)

{

if (i==0 || w==0)

K[i][w] = 0;

else if (wt[i-1] <= w)

K[i][w] = max(val[i-1] + K[i-1][w-wt[i-1]], K[i-1][w]);

else

K[i][w] = K[i-1][w];

}

}



return K[n][W];

}



int main()

{

int i, n, val[20], wt[20], W;



printf("Enter number of items:");

scanf("%d", &n);



printf("Enter value and weight of items:\n");

for(i = 0;i < n; ++i){

scanf("%d%d", &val[i], &wt[i]);

}



printf("Enter size of knapsack:");

scanf("%d", &W);



printf("Maximum Profit: %d", knapSack(W, wt, val, n));

return 0;

}

Comments

Popular posts from this blog

C program to evaluate Prefix Expression using Stack data structure

C++ program to perform data transformation Min-max and Z score Normalization

Java Program to Implement sorting algorithm using TCP on Server application